< Summary

Class:GDX.Tables.StableTable
Assembly:GDX
File(s):D:/BuildAgent/work/GDX-Documentation/Projects/GDX_Development/Packages/com.dotbunny.gdx/GDX/Tables/StableTable.cs
Covered lines:0
Uncovered lines:928
Coverable lines:928
Total lines:1460
Line coverage:0% (0 of 928)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:143
Method coverage:0% (0 of 143)

Coverage History

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
StableTable()0%2100%
GetDataVersion()0%2100%
GetColumnCount()0%2100%
GetRowCount()0%2100%
GetAllRowDescriptions()0%20400%
GetRowDescription(...)0%12300%
GetRowDescription(...)0%2100%
GetColumnDescription(...)0%30500%
GetColumnDescription(...)0%2100%
GetAllColumnDescriptions()0%12300%
SetColumnName(...)0%2100%
GetColumnName(...)0%2100%
GetColumnNameRef(...)0%2100%
AddRow(...)0%2101400%
AddRows(...)0%3801900%
AddRows(...)0%3801900%
RemoveRow(...)0%6200%
AddColumn(...)0%9923100%
RemoveColumn(...)0%9303000%
SetString(...)0%2100%
SetBool(...)0%2100%
SetChar(...)0%2100%
SetSByte(...)0%2100%
SetByte(...)0%2100%
SetShort(...)0%2100%
SetUShort(...)0%2100%
SetInt(...)0%2100%
SetUInt(...)0%2100%
SetLong(...)0%2100%
SetULong(...)0%2100%
SetFloat(...)0%2100%
SetDouble(...)0%2100%
SetVector2(...)0%2100%
SetVector3(...)0%2100%
SetVector4(...)0%2100%
SetVector2Int(...)0%2100%
SetVector3Int(...)0%2100%
SetQuaternion(...)0%2100%
SetRect(...)0%2100%
SetRectInt(...)0%2100%
SetColor(...)0%2100%
SetLayerMask(...)0%2100%
SetBounds(...)0%2100%
SetBoundsInt(...)0%2100%
SetHash128(...)0%2100%
SetGradient(...)0%2100%
SetAnimationCurve(...)0%2100%
SetObject(...)0%2100%
GetString(...)0%2100%
GetBool(...)0%2100%
GetChar(...)0%2100%
GetSByte(...)0%2100%
GetByte(...)0%2100%
GetShort(...)0%2100%
GetUShort(...)0%2100%
GetInt(...)0%2100%
GetUInt(...)0%2100%
GetLong(...)0%2100%
GetULong(...)0%2100%
GetFloat(...)0%2100%
GetDouble(...)0%2100%
GetVector2(...)0%2100%
GetVector3(...)0%2100%
GetVector4(...)0%2100%
GetVector2Int(...)0%2100%
GetVector3Int(...)0%2100%
GetQuaternion(...)0%2100%
GetRect(...)0%2100%
GetRectInt(...)0%2100%
GetColor(...)0%2100%
GetLayerMask(...)0%2100%
GetBounds(...)0%2100%
GetBoundsInt(...)0%2100%
GetHash128(...)0%2100%
GetGradient(...)0%2100%
GetAnimationCurve(...)0%2100%
GetObject(...)0%2100%
GetStringRef(...)0%2100%
GetBoolRef(...)0%2100%
GetCharRef(...)0%2100%
GetSbyteRef(...)0%2100%
GetByteRef(...)0%2100%
GetShortRef(...)0%2100%
GetUshortRef(...)0%2100%
GetIntRef(...)0%2100%
GetUintRef(...)0%2100%
GetLongRef(...)0%2100%
GetUlongRef(...)0%2100%
GetFloatRef(...)0%2100%
GetDoubleRef(...)0%2100%
GetVector2Ref(...)0%2100%
GetVector3Ref(...)0%2100%
GetVector4Ref(...)0%2100%
GetVector2IntRef(...)0%2100%
GetVector3IntRef(...)0%2100%
GetQuaternionRef(...)0%2100%
GetRectRef(...)0%2100%
GetRectIntRef(...)0%2100%
GetColorRef(...)0%2100%
GetLayerMaskRef(...)0%2100%
GetBoundsRef(...)0%2100%
GetBoundsIntRef(...)0%2100%
GetHash128Ref(...)0%2100%
GetGradientRef(...)0%2100%
GetAnimationCurveRef(...)0%2100%
GetObjectRef(...)0%2100%
GetStringColumn(...)0%2100%
GetBoolColumn(...)0%2100%
GetCharColumn(...)0%2100%
GetSbyteColumn(...)0%2100%
GetByteColumn(...)0%2100%
GetShortColumn(...)0%2100%
GetUshortColumn(...)0%2100%
GetIntColumn(...)0%2100%
GetUintColumn(...)0%2100%
GetLongColumn(...)0%2100%
GetUlongColumn(...)0%2100%
GetFloatColumn(...)0%2100%
GetDoubleColumn(...)0%2100%
GetVector2Column(...)0%2100%
GetVector3Column(...)0%2100%
GetVector4Column(...)0%2100%
GetVector2IntColumn(...)0%2100%
GetVector3IntColumn(...)0%2100%
GetQuaternionColumn(...)0%2100%
GetRectColumn(...)0%2100%
GetRectIntColumn(...)0%2100%
GetColorColumn(...)0%2100%
GetLayerMaskColumn(...)0%2100%
GetBoundsColumn(...)0%2100%
GetBoundsIntColumn(...)0%2100%
GetHash128Column(...)0%2100%
GetGradientColumn(...)0%2100%
GetAnimationCurveColumn(...)0%2100%
GetObjectColumn(...)0%2100%
AddColumnInternal[T](...)0%3801900%
RemoveColumnInternal[T](...)0%6200%
InsertRowsOfTypeInternal[T](...)0%42600%
DeleteRowsOfTypeInternal[T](...)0%30500%
GetCellRef[T](...)0%2100%
GetCell[T](...)0%2100%
SetCell[T](...)0%2100%
GetColumn[T](...)0%2100%

File(s)

D:/BuildAgent/work/GDX-Documentation/Projects/GDX_Development/Packages/com.dotbunny.gdx/GDX/Tables/StableTable.cs

#LineLine coverage
 1// Copyright (c) 2020-2023 dotBunny Inc.
 2// dotBunny licenses this file to you under the BSL-1.0 license.
 3// See the LICENSE file in the project root for more information.
 4
 5using System;
 6using GDX.Collections;
 7using UnityEngine;
 8
 9namespace GDX.Tables
 10{
 11
 12    [CreateAssetMenu(menuName = "GDX/Stable Table", fileName = "GDXStableTable")]
 13    [Serializable]
 14    public class StableTable : ScriptableObject, ITable
 15    {
 16        [Serializable]
 17        internal struct ColumnEntry
 18        {
 19            public Serializable.SerializableTypes ColumnType;
 20            public int columnDenseIndex;
 21        }
 22
 23        [SerializeField] internal ArrayHolder<string>[] allStringColumns;
 24        [SerializeField] internal ArrayHolder<bool>[] allBoolColumns;
 25        [SerializeField] internal ArrayHolder<char>[] allCharColumns;
 26        [SerializeField] internal ArrayHolder<sbyte>[] allSbyteColumns;
 27        [SerializeField] internal ArrayHolder<byte>[] allByteColumns;
 28        [SerializeField] internal ArrayHolder<short>[] allShortColumns;
 29        [SerializeField] internal ArrayHolder<ushort>[] allUshortColumns;
 30        [SerializeField] internal ArrayHolder<int>[] allIntColumns;
 31        [SerializeField] internal ArrayHolder<uint>[] allUintColumns;
 32        [SerializeField] internal ArrayHolder<long>[] allLongColumns;
 33        [SerializeField] internal ArrayHolder<ulong>[] allUlongColumns;
 34        [SerializeField] internal ArrayHolder<float>[] allFloatColumns;
 35        [SerializeField] internal ArrayHolder<double>[] allDoubleColumns;
 36        [SerializeField] internal ArrayHolder<Vector2>[] allVector2Columns;
 37        [SerializeField] internal ArrayHolder<Vector3>[] allVector3Columns;
 38        [SerializeField] internal ArrayHolder<Vector4>[] allVector4Columns;
 39        [SerializeField] internal ArrayHolder<Vector2Int>[] allVector2IntColumns;
 40        [SerializeField] internal ArrayHolder<Vector3Int>[] allVector3IntColumns;
 41        [SerializeField] internal ArrayHolder<Quaternion>[] allQuaternionColumns;
 42        [SerializeField] internal ArrayHolder<Rect>[] allRectColumns;
 43        [SerializeField] internal ArrayHolder<RectInt>[] allRectIntColumns;
 44        [SerializeField] internal ArrayHolder<Color>[] allColorColumns;
 45        [SerializeField] internal ArrayHolder<LayerMask>[] allLayerMaskColumns;
 46        [SerializeField] internal ArrayHolder<Bounds>[] allBoundsColumns;
 47        [SerializeField] internal ArrayHolder<BoundsInt>[] allBoundsIntColumns;
 48        [SerializeField] internal ArrayHolder<Hash128>[] allHash128Columns;
 49        [SerializeField] internal ArrayHolder<Gradient>[] allGradientColumns;
 50        [SerializeField] internal ArrayHolder<AnimationCurve>[] allAnimationCurveColumns;
 51        [SerializeField] internal ArrayHolder<UnityEngine.Object>[] allObjectRefColumns;
 052        [SerializeField] internal ArrayHolder<string>[] allColumnNames = new ArrayHolder<string>[Serializable.Serializab
 53
 54        [SerializeField] internal int[] rowIDToDenseIndexMap;
 55        [SerializeField] internal int[] rowDenseIndexToIDMap;
 56        [SerializeField] internal string[] rowNames;
 57        [SerializeField] internal int rowEntriesFreeListHead;
 58
 59        [SerializeField]
 60        internal int rowCount;
 61
 62        [SerializeField] internal ColumnEntry[] columnIDToDenseIndexMap;
 63        [SerializeField] internal int[] columnIDToSortOrderMap;
 64        [SerializeField] internal int[] sortedOrderToColumnIDMap;
 65
 66        // TODO move with other block
 067        [SerializeField] ArrayHolder<int>[] columnDenseIndexToIDMap = new ArrayHolder<int>[Serializable.SerializableType
 68
 69        [SerializeField]
 70        internal int columnEntriesFreeListHead;
 71
 72        [SerializeField]
 73        internal int combinedColumnCount;
 74
 75        [SerializeField]
 076        internal ulong dataVersion = 1;
 77
 78
 79        public ulong GetDataVersion()
 080        {
 081            return dataVersion;
 082        }
 83
 84        /// <inheritdoc />
 85        public int GetColumnCount()
 086        {
 087            return combinedColumnCount;
 088        }
 89
 90        /// <inheritdoc />
 91        public int GetRowCount()
 092        {
 093            return rowCount;
 094        }
 95
 96        public ITable.RowDescription[] GetAllRowDescriptions()
 097        {
 098            if (combinedColumnCount == 0 || rowCount == 0) return null;
 099            ITable.RowDescription[] returnArray = new ITable.RowDescription[rowCount];
 0100            string empty = string.Empty;
 0101            for (int i = 0; i < rowCount; i++)
 0102            {
 0103                returnArray[i].Index = rowDenseIndexToIDMap[i];
 0104                returnArray[i].Name = empty;
 0105            }
 106
 0107            return returnArray;
 0108        }
 109        public ITable.RowDescription GetRowDescription(string name)
 0110        {
 0111            for (int i = 0; i < rowCount; i++)
 0112            {
 0113                string nameAt = rowNames[i];
 114
 0115                if (nameAt == name)
 0116                {
 0117                    return new ITable.RowDescription
 118                    {
 119                        Index = rowDenseIndexToIDMap[i],
 120                        Name = nameAt
 121                    };
 122                }
 0123            }
 124
 0125            throw new ArgumentException("Row with name " + name + " does not exist in the table");
 0126        }
 127
 128        public ITable.RowDescription GetRowDescription(int order)
 0129        {
 0130            return new ITable.RowDescription
 131            {
 132                Index = rowDenseIndexToIDMap[order],
 133                Name = rowNames[order]
 134            };
 0135        }
 136
 137        public ITable.ColumnDescription GetColumnDescription(string name)
 0138        {
 0139            for (int i = 0; i < Serializable.SerializableTypesCount; i++)
 0140            {
 0141                string[] columnNames = allColumnNames[i].TArray;
 142
 0143                if (columnNames != null)
 0144                {
 0145                    for (int j = 0; j < columnNames.Length; j++)
 0146                    {
 0147                        string nameAt = columnNames[j];
 148
 0149                        if (name == nameAt)
 0150                        {
 0151                            int columnID = columnDenseIndexToIDMap[i].TArray[j];
 152
 0153                            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0154                            return new ITable.ColumnDescription
 155                            {
 156                                Index = columnID,
 157                                Name = nameAt,
 158                                Type = columnEntry.ColumnType
 159                            };
 160                        }
 0161                    }
 0162                }
 0163            }
 164
 0165            throw new ArgumentException("Column with name " + name + " does not exist in the table");
 0166        }
 167
 168        public ITable.ColumnDescription GetColumnDescription(int order)
 0169        {
 0170            int idAtOrderedIndex = sortedOrderToColumnIDMap[order];
 0171            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[idAtOrderedIndex];
 172
 0173            string columnName = allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex];
 174
 0175            return new ITable.ColumnDescription
 176            {
 177                Index = idAtOrderedIndex,
 178                Name = columnName,
 179                Type = columnEntry.ColumnType
 180            };
 0181        }
 182
 183        /// <inheritdoc />
 184        public ITable.ColumnDescription[] GetAllColumnDescriptions()
 0185        {
 0186            if (combinedColumnCount == 0) return null;
 0187            ITable.ColumnDescription[] returnArray = new ITable.ColumnDescription[combinedColumnCount];
 188
 0189            for (int i = 0; i < combinedColumnCount; i++)
 0190            {
 0191                int columnID = sortedOrderToColumnIDMap[i];
 0192                Serializable.SerializableTypes columnType = columnIDToDenseIndexMap[columnID].ColumnType;
 0193                string name = allColumnNames[(int)columnType][columnIDToDenseIndexMap[columnID].columnDenseIndex];
 194
 0195                returnArray[i] = new ITable.ColumnDescription
 196                {
 197                    Name = name,
 198                    Index = columnID,
 199                    Type = columnType
 200                };
 0201            }
 202
 0203            return returnArray;
 0204        }
 205
 206        public void SetColumnName(string name, int columnID)
 0207        {
 0208            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0209            allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex] = name;
 0210        }
 211
 212        public string GetColumnName(int columnID)
 0213        {
 0214            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0215            return allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex];
 0216        }
 217
 218        public ref string GetColumnNameRef(int columnID)
 0219        {
 0220            ref ColumnEntry columnEntry = ref columnIDToDenseIndexMap[columnID];
 0221            return ref allColumnNames[(int)columnEntry.ColumnType][columnEntry.columnDenseIndex];
 0222        }
 223
 224
 225        public int AddRow(string rowName = null, int insertAtRowID = -1)
 0226        {
 0227            int rowID = rowEntriesFreeListHead;
 0228            int rowIDToDenseIndexMapLength = rowIDToDenseIndexMap?.Length ?? 0;
 0229            if (rowID >= rowIDToDenseIndexMapLength)
 0230            {
 0231                int newSize = rowID * 2;
 0232                newSize = newSize == 0 ? 1 : newSize;
 0233                Array.Resize(ref rowIDToDenseIndexMap, newSize);
 0234                for (int i = rowID; i < newSize; i++)
 0235                {
 0236                    rowIDToDenseIndexMap[i] = i + 1;
 0237                }
 0238            }
 239
 0240            int denseIndexToIDMapLength = rowDenseIndexToIDMap?.Length ?? 0;
 0241            Array.Resize(ref rowDenseIndexToIDMap, denseIndexToIDMapLength + 1);
 0242            Array.Resize(ref rowNames, denseIndexToIDMapLength + 1);
 243
 0244            int insertAt = insertAtRowID < 0 ? rowCount : rowIDToDenseIndexMap[insertAtRowID];
 245
 0246            for (int i = denseIndexToIDMapLength; i > insertAt; i--)
 0247            {
 0248                int currentRowID = rowDenseIndexToIDMap[i - 1];
 0249                rowDenseIndexToIDMap[i] = currentRowID;
 250
 0251                rowIDToDenseIndexMap[currentRowID] = i;
 252
 0253                rowNames[i] = rowNames[i - 1];
 0254            }
 255
 0256            rowEntriesFreeListHead = rowIDToDenseIndexMap[rowID];
 0257            rowIDToDenseIndexMap[rowID] = insertAt;
 0258            rowDenseIndexToIDMap[insertAt] = rowID;
 0259            rowNames[insertAt] = rowName == null ? rowID.ToString() : rowName;
 260
 0261            InsertRowsOfTypeInternal(ref allStringColumns, insertAt, 1);
 0262            InsertRowsOfTypeInternal(ref allBoolColumns, insertAt, 1);
 0263            InsertRowsOfTypeInternal(ref allCharColumns, insertAt, 1);
 0264            InsertRowsOfTypeInternal(ref allSbyteColumns, insertAt, 1);
 0265            InsertRowsOfTypeInternal(ref allByteColumns, insertAt, 1);
 0266            InsertRowsOfTypeInternal(ref allShortColumns, insertAt, 1);
 0267            InsertRowsOfTypeInternal(ref allUshortColumns, insertAt, 1);
 0268            InsertRowsOfTypeInternal(ref allIntColumns, insertAt, 1);
 0269            InsertRowsOfTypeInternal(ref allUintColumns, insertAt, 1);
 0270            InsertRowsOfTypeInternal(ref allLongColumns, insertAt, 1);
 0271            InsertRowsOfTypeInternal(ref allUlongColumns, insertAt, 1);
 0272            InsertRowsOfTypeInternal(ref allFloatColumns, insertAt, 1);
 0273            InsertRowsOfTypeInternal(ref allDoubleColumns, insertAt, 1);
 0274            InsertRowsOfTypeInternal(ref allVector2Columns, insertAt, 1);
 0275            InsertRowsOfTypeInternal(ref allVector3Columns, insertAt, 1);
 0276            InsertRowsOfTypeInternal(ref allVector4Columns, insertAt, 1);
 0277            InsertRowsOfTypeInternal(ref allVector2IntColumns, insertAt, 1);
 0278            InsertRowsOfTypeInternal(ref allVector3IntColumns, insertAt, 1);
 0279            InsertRowsOfTypeInternal(ref allQuaternionColumns, insertAt, 1);
 0280            InsertRowsOfTypeInternal(ref allRectColumns, insertAt, 1);
 0281            InsertRowsOfTypeInternal(ref allRectIntColumns, insertAt, 1);
 0282            InsertRowsOfTypeInternal(ref allColorColumns, insertAt, 1);
 0283            InsertRowsOfTypeInternal(ref allLayerMaskColumns, insertAt, 1);
 0284            InsertRowsOfTypeInternal(ref allBoundsColumns, insertAt, 1);
 0285            InsertRowsOfTypeInternal(ref allBoundsIntColumns, insertAt, 1);
 0286            InsertRowsOfTypeInternal(ref allHash128Columns, insertAt, 1);
 0287            InsertRowsOfTypeInternal(ref allGradientColumns, insertAt, 1);
 0288            InsertRowsOfTypeInternal(ref allAnimationCurveColumns, insertAt, 1);
 0289            InsertRowsOfTypeInternal(ref allObjectRefColumns, insertAt, 1);
 290
 0291            ++rowCount;
 0292            dataVersion++;
 293
 0294            return rowID;
 0295        }
 296
 297        public void AddRows(int numberOfNewRows, string[] rowNames = null, int insertAtRowID = -1)
 0298        {
 0299            int rowIDToDenseIndexMapLength = rowIDToDenseIndexMap?.Length ?? 0;
 0300            int newCount = rowCount + numberOfNewRows;
 0301            if (newCount > rowIDToDenseIndexMapLength)
 0302            {
 0303                int newSize = newCount;
 0304                --newSize;
 0305                newSize |= newSize >> 1;
 0306                newSize |= newSize >> 2;
 0307                newSize |= newSize >> 4;
 0308                newSize |= newSize >> 8;
 0309                newSize |= newSize >> 16;
 0310                ++newSize;
 311
 0312                newSize = newSize == 0 ? 1 : newSize;
 0313                Array.Resize(ref rowIDToDenseIndexMap, newSize);
 0314                for (int i = rowIDToDenseIndexMapLength; i < newSize; i++)
 0315                {
 0316                    rowIDToDenseIndexMap[i] = i + 1;
 0317                }
 0318            }
 319
 0320            int denseIndexToIDMapLength = rowDenseIndexToIDMap?.Length ?? 0;
 0321            Array.Resize(ref rowDenseIndexToIDMap, denseIndexToIDMapLength + numberOfNewRows);
 0322            Array.Resize(ref rowNames, denseIndexToIDMapLength + numberOfNewRows);
 323
 0324            int insertAt = insertAtRowID < 0 ? rowCount : rowIDToDenseIndexMap[insertAtRowID];
 325
 0326            for (int i = denseIndexToIDMapLength; i > insertAt + numberOfNewRows - 1; i--)
 0327            {
 0328                int currentRowID = rowDenseIndexToIDMap[i - numberOfNewRows];
 0329                rowDenseIndexToIDMap[i] = currentRowID;
 330
 0331                rowIDToDenseIndexMap[currentRowID] = i;
 332
 0333                rowNames[i] = rowNames[i - numberOfNewRows];
 0334            }
 335
 0336            int freeListHead = rowEntriesFreeListHead;
 337
 0338            for (int i = 0; i < numberOfNewRows; i++)
 0339            {
 0340                int rowID = freeListHead;
 0341                freeListHead = rowIDToDenseIndexMap[rowID];
 0342                rowIDToDenseIndexMap[rowID] = insertAt + i;
 0343                rowDenseIndexToIDMap[insertAt + i] = rowID;
 0344            }
 345
 0346            int numberOfNewRowNames = rowNames?.Length ?? 0;
 0347            string emptyString = string.Empty;
 0348            for (int i = 0; i < numberOfNewRowNames; i++)
 0349            {
 0350                string currentRowName = rowNames[i];
 0351                int rowIDAt = rowDenseIndexToIDMap[insertAt + i];
 0352                rowNames[insertAt + i] = currentRowName == null ? rowIDAt.ToString() : currentRowName;
 0353            }
 354
 0355            for (int i = numberOfNewRowNames; i < numberOfNewRows; i++)
 0356            {
 0357                int rowIDAt = rowDenseIndexToIDMap[insertAt + i];
 0358                rowNames[insertAt + i] = rowIDAt.ToString();
 0359            }
 360
 0361            rowEntriesFreeListHead = freeListHead;
 362
 0363            InsertRowsOfTypeInternal(ref allStringColumns, insertAt, numberOfNewRows);
 0364            InsertRowsOfTypeInternal(ref allBoolColumns, insertAt, numberOfNewRows);
 0365            InsertRowsOfTypeInternal(ref allCharColumns, insertAt, numberOfNewRows);
 0366            InsertRowsOfTypeInternal(ref allSbyteColumns, insertAt, numberOfNewRows);
 0367            InsertRowsOfTypeInternal(ref allByteColumns, insertAt, numberOfNewRows);
 0368            InsertRowsOfTypeInternal(ref allShortColumns, insertAt, numberOfNewRows);
 0369            InsertRowsOfTypeInternal(ref allUshortColumns, insertAt, numberOfNewRows);
 0370            InsertRowsOfTypeInternal(ref allIntColumns, insertAt, numberOfNewRows);
 0371            InsertRowsOfTypeInternal(ref allUintColumns, insertAt, numberOfNewRows);
 0372            InsertRowsOfTypeInternal(ref allLongColumns, insertAt, numberOfNewRows);
 0373            InsertRowsOfTypeInternal(ref allUlongColumns, insertAt, numberOfNewRows);
 0374            InsertRowsOfTypeInternal(ref allFloatColumns, insertAt, numberOfNewRows);
 0375            InsertRowsOfTypeInternal(ref allDoubleColumns, insertAt, numberOfNewRows);
 0376            InsertRowsOfTypeInternal(ref allVector2Columns, insertAt, numberOfNewRows);
 0377            InsertRowsOfTypeInternal(ref allVector3Columns, insertAt, numberOfNewRows);
 0378            InsertRowsOfTypeInternal(ref allVector4Columns, insertAt, numberOfNewRows);
 0379            InsertRowsOfTypeInternal(ref allVector2IntColumns, insertAt, numberOfNewRows);
 0380            InsertRowsOfTypeInternal(ref allVector3IntColumns, insertAt, numberOfNewRows);
 0381            InsertRowsOfTypeInternal(ref allQuaternionColumns, insertAt, numberOfNewRows);
 0382            InsertRowsOfTypeInternal(ref allRectColumns, insertAt, numberOfNewRows);
 0383            InsertRowsOfTypeInternal(ref allRectIntColumns, insertAt, numberOfNewRows);
 0384            InsertRowsOfTypeInternal(ref allColorColumns, insertAt, numberOfNewRows);
 0385            InsertRowsOfTypeInternal(ref allLayerMaskColumns, insertAt, numberOfNewRows);
 0386            InsertRowsOfTypeInternal(ref allBoundsColumns, insertAt, numberOfNewRows);
 0387            InsertRowsOfTypeInternal(ref allBoundsIntColumns, insertAt, numberOfNewRows);
 0388            InsertRowsOfTypeInternal(ref allHash128Columns, insertAt, numberOfNewRows);
 0389            InsertRowsOfTypeInternal(ref allGradientColumns, insertAt, numberOfNewRows);
 0390            InsertRowsOfTypeInternal(ref allAnimationCurveColumns, insertAt, numberOfNewRows);
 0391            InsertRowsOfTypeInternal(ref allObjectRefColumns, insertAt, numberOfNewRows);
 392
 0393            rowCount += numberOfNewRows;
 0394            dataVersion++;
 0395        }
 396
 397        public void AddRows(int numberOfNewRows, ref int[] rowIDs, string[] rowNames = null, int insertAtRowID = -1)
 0398        {
 0399            int rowIDToDenseIndexMapLength = rowIDToDenseIndexMap?.Length ?? 0;
 0400            int newCount = rowCount + numberOfNewRows;
 0401            if (newCount > rowIDToDenseIndexMapLength)
 0402            {
 0403                int newSize = newCount;
 0404                --newSize;
 0405                newSize |= newSize >> 1;
 0406                newSize |= newSize >> 2;
 0407                newSize |= newSize >> 4;
 0408                newSize |= newSize >> 8;
 0409                newSize |= newSize >> 16;
 0410                ++newSize;
 411
 0412                newSize = newSize == 0 ? 1 : newSize;
 0413                Array.Resize(ref rowIDToDenseIndexMap, newSize);
 0414                for (int i = rowIDToDenseIndexMapLength; i < newSize; i++)
 0415                {
 0416                    rowIDToDenseIndexMap[i] = i + 1;
 0417                }
 0418            }
 419
 0420            int denseIndexToIDMapLength = rowDenseIndexToIDMap?.Length ?? 0;
 0421            Array.Resize(ref rowDenseIndexToIDMap, denseIndexToIDMapLength + numberOfNewRows);
 422
 0423            int insertAt = insertAtRowID < 0 ? rowCount : rowIDToDenseIndexMap[insertAtRowID];
 424
 0425            for (int i = denseIndexToIDMapLength; i > insertAt + numberOfNewRows - 1; i--)
 0426            {
 0427                int currentRowID = rowDenseIndexToIDMap[i - numberOfNewRows];
 0428                rowDenseIndexToIDMap[i] = currentRowID;
 429
 0430                rowIDToDenseIndexMap[currentRowID] = i;
 431
 0432                rowNames[i] = rowNames[i - numberOfNewRows];
 0433            }
 434
 0435            int freeListHead = rowEntriesFreeListHead;
 436
 0437            for (int i = 0; i < numberOfNewRows; i++)
 0438            {
 0439                int rowID = freeListHead;
 0440                freeListHead = rowIDToDenseIndexMap[rowID];
 0441                rowIDToDenseIndexMap[rowID] = insertAt + i;
 0442                rowDenseIndexToIDMap[insertAt + i] = rowID;
 0443                rowIDs[i] = rowID;
 0444            }
 445
 0446            int numberOfNewRowNames = rowNames?.Length ?? 0;
 0447            for (int i = 0; i < numberOfNewRowNames; i++)
 0448            {
 0449                string currentRowName = rowNames[i];
 0450                int rowIDAt = rowDenseIndexToIDMap[insertAt + i];
 0451                rowNames[insertAt + i] = currentRowName == null ? rowIDAt.ToString() : currentRowName;
 0452            }
 453
 0454            for (int i = numberOfNewRowNames; i < numberOfNewRows; i++)
 0455            {
 0456                int rowIDAt = rowDenseIndexToIDMap[insertAt + i];
 0457                rowNames[insertAt + i] = rowIDAt.ToString();
 0458            }
 459
 0460            rowEntriesFreeListHead = freeListHead;
 461
 0462            InsertRowsOfTypeInternal(ref allStringColumns, insertAt, numberOfNewRows);
 0463            InsertRowsOfTypeInternal(ref allBoolColumns, insertAt, numberOfNewRows);
 0464            InsertRowsOfTypeInternal(ref allCharColumns, insertAt, numberOfNewRows);
 0465            InsertRowsOfTypeInternal(ref allSbyteColumns, insertAt, numberOfNewRows);
 0466            InsertRowsOfTypeInternal(ref allByteColumns, insertAt, numberOfNewRows);
 0467            InsertRowsOfTypeInternal(ref allShortColumns, insertAt, numberOfNewRows);
 0468            InsertRowsOfTypeInternal(ref allUshortColumns, insertAt, numberOfNewRows);
 0469            InsertRowsOfTypeInternal(ref allIntColumns, insertAt, numberOfNewRows);
 0470            InsertRowsOfTypeInternal(ref allUintColumns, insertAt, numberOfNewRows);
 0471            InsertRowsOfTypeInternal(ref allLongColumns, insertAt, numberOfNewRows);
 0472            InsertRowsOfTypeInternal(ref allUlongColumns, insertAt, numberOfNewRows);
 0473            InsertRowsOfTypeInternal(ref allFloatColumns, insertAt, numberOfNewRows);
 0474            InsertRowsOfTypeInternal(ref allDoubleColumns, insertAt, numberOfNewRows);
 0475            InsertRowsOfTypeInternal(ref allVector2Columns, insertAt, numberOfNewRows);
 0476            InsertRowsOfTypeInternal(ref allVector3Columns, insertAt, numberOfNewRows);
 0477            InsertRowsOfTypeInternal(ref allVector4Columns, insertAt, numberOfNewRows);
 0478            InsertRowsOfTypeInternal(ref allVector2IntColumns, insertAt, numberOfNewRows);
 0479            InsertRowsOfTypeInternal(ref allVector3IntColumns, insertAt, numberOfNewRows);
 0480            InsertRowsOfTypeInternal(ref allQuaternionColumns, insertAt, numberOfNewRows);
 0481            InsertRowsOfTypeInternal(ref allRectColumns, insertAt, numberOfNewRows);
 0482            InsertRowsOfTypeInternal(ref allRectIntColumns, insertAt, numberOfNewRows);
 0483            InsertRowsOfTypeInternal(ref allColorColumns, insertAt, numberOfNewRows);
 0484            InsertRowsOfTypeInternal(ref allLayerMaskColumns, insertAt, numberOfNewRows);
 0485            InsertRowsOfTypeInternal(ref allBoundsColumns, insertAt, numberOfNewRows);
 0486            InsertRowsOfTypeInternal(ref allBoundsIntColumns, insertAt, numberOfNewRows);
 0487            InsertRowsOfTypeInternal(ref allHash128Columns, insertAt, numberOfNewRows);
 0488            InsertRowsOfTypeInternal(ref allGradientColumns, insertAt, numberOfNewRows);
 0489            InsertRowsOfTypeInternal(ref allAnimationCurveColumns, insertAt, numberOfNewRows);
 0490            InsertRowsOfTypeInternal(ref allObjectRefColumns, insertAt, numberOfNewRows);
 491
 0492            rowCount += numberOfNewRows;
 0493            dataVersion++;
 0494        }
 495
 496        public void RemoveRow(int rowID)
 0497        {
 0498            int rowDenseIndex = rowIDToDenseIndexMap[rowID];
 0499            for (int i = rowDenseIndex + 1; i < rowCount; i++)
 0500            {
 0501                int currentRowID = rowDenseIndexToIDMap[i];
 0502                rowIDToDenseIndexMap[currentRowID] = i - 1;
 0503                rowDenseIndexToIDMap[i - 1] = currentRowID;
 0504                rowNames[i - 1] = rowNames[i];
 0505            }
 506
 0507            rowIDToDenseIndexMap[rowID] = rowEntriesFreeListHead;
 0508            rowEntriesFreeListHead = rowID;
 0509            Array.Resize(ref rowDenseIndexToIDMap, rowCount - 1);
 0510            Array.Resize(ref rowNames, rowCount - 1);
 511
 0512            DeleteRowsOfTypeInternal(ref allStringColumns, rowID, 1);
 0513            DeleteRowsOfTypeInternal(ref allBoolColumns, rowID, 1);
 0514            DeleteRowsOfTypeInternal(ref allCharColumns, rowID, 1);
 0515            DeleteRowsOfTypeInternal(ref allSbyteColumns, rowID, 1);
 0516            DeleteRowsOfTypeInternal(ref allByteColumns, rowID, 1);
 0517            DeleteRowsOfTypeInternal(ref allShortColumns, rowID, 1);
 0518            DeleteRowsOfTypeInternal(ref allUshortColumns, rowID, 1);
 0519            DeleteRowsOfTypeInternal(ref allIntColumns, rowID, 1);
 0520            DeleteRowsOfTypeInternal(ref allUintColumns, rowID, 1);
 0521            DeleteRowsOfTypeInternal(ref allLongColumns, rowID, 1);
 0522            DeleteRowsOfTypeInternal(ref allUlongColumns, rowID, 1);
 0523            DeleteRowsOfTypeInternal(ref allFloatColumns, rowID, 1);
 0524            DeleteRowsOfTypeInternal(ref allDoubleColumns, rowID, 1);
 0525            DeleteRowsOfTypeInternal(ref allVector2Columns, rowID, 1);
 0526            DeleteRowsOfTypeInternal(ref allVector3Columns, rowID, 1);
 0527            DeleteRowsOfTypeInternal(ref allVector4Columns, rowID, 1);
 0528            DeleteRowsOfTypeInternal(ref allVector2IntColumns, rowID, 1);
 0529            DeleteRowsOfTypeInternal(ref allVector3IntColumns, rowID, 1);
 0530            DeleteRowsOfTypeInternal(ref allQuaternionColumns, rowID, 1);
 0531            DeleteRowsOfTypeInternal(ref allRectColumns, rowID, 1);
 0532            DeleteRowsOfTypeInternal(ref allRectIntColumns, rowID, 1);
 0533            DeleteRowsOfTypeInternal(ref allColorColumns, rowID, 1);
 0534            DeleteRowsOfTypeInternal(ref allLayerMaskColumns, rowID, 1);
 0535            DeleteRowsOfTypeInternal(ref allBoundsColumns, rowID, 1);
 0536            DeleteRowsOfTypeInternal(ref allBoundsIntColumns, rowID, 1);
 0537            DeleteRowsOfTypeInternal(ref allHash128Columns, rowID, 1);
 0538            DeleteRowsOfTypeInternal(ref allGradientColumns, rowID, 1);
 0539            DeleteRowsOfTypeInternal(ref allAnimationCurveColumns, rowID, 1);
 0540            DeleteRowsOfTypeInternal(ref allObjectRefColumns, rowID, 1);
 541
 0542            --rowCount;
 0543            dataVersion++;
 0544        }
 545
 546        public int AddColumn(Serializable.SerializableTypes columnType, string columnName, int insertAtColumnID = -1)
 0547        {
 0548            switch (columnType)
 549            {
 550                case Serializable.SerializableTypes.String:
 0551                    return AddColumnInternal(columnName, ref allStringColumns, Serializable.SerializableTypes.String, in
 552                case Serializable.SerializableTypes.Char:
 0553                    return AddColumnInternal(columnName, ref allCharColumns, Serializable.SerializableTypes.Char, insert
 554                case Serializable.SerializableTypes.Bool:
 0555                    return AddColumnInternal(columnName, ref allBoolColumns, Serializable.SerializableTypes.Bool, insert
 556                case Serializable.SerializableTypes.SByte:
 0557                    return AddColumnInternal(columnName, ref allSbyteColumns, Serializable.SerializableTypes.SByte, inse
 558                case Serializable.SerializableTypes.Byte:
 0559                    return AddColumnInternal(columnName, ref allByteColumns, Serializable.SerializableTypes.Byte, insert
 560                case Serializable.SerializableTypes.Short:
 0561                    return AddColumnInternal(columnName, ref allShortColumns, Serializable.SerializableTypes.Short, inse
 562                case Serializable.SerializableTypes.UShort:
 0563                    return AddColumnInternal(columnName, ref allUshortColumns, Serializable.SerializableTypes.UShort, in
 564                case Serializable.SerializableTypes.Int:
 0565                    return AddColumnInternal(columnName, ref allIntColumns, Serializable.SerializableTypes.Int, insertAt
 566                case Serializable.SerializableTypes.UInt:
 0567                    return AddColumnInternal(columnName, ref allUintColumns, Serializable.SerializableTypes.UInt, insert
 568                case Serializable.SerializableTypes.Long:
 0569                    return AddColumnInternal(columnName, ref allLongColumns, Serializable.SerializableTypes.Long, insert
 570                case Serializable.SerializableTypes.ULong:
 0571                    return AddColumnInternal(columnName, ref allUlongColumns, Serializable.SerializableTypes.ULong, inse
 572                case Serializable.SerializableTypes.Float:
 0573                    return AddColumnInternal(columnName, ref allFloatColumns, Serializable.SerializableTypes.Float, inse
 574                case Serializable.SerializableTypes.Double:
 0575                    return AddColumnInternal(columnName, ref allDoubleColumns, Serializable.SerializableTypes.Double, in
 576                case Serializable.SerializableTypes.Vector2:
 0577                    return AddColumnInternal(columnName, ref allVector2Columns, Serializable.SerializableTypes.Vector2, 
 578                case Serializable.SerializableTypes.Vector3:
 0579                    return AddColumnInternal(columnName, ref allVector3Columns, Serializable.SerializableTypes.Vector3, 
 580                case Serializable.SerializableTypes.Vector4:
 0581                    return AddColumnInternal(columnName, ref allVector4Columns, Serializable.SerializableTypes.Vector4, 
 582                case Serializable.SerializableTypes.Vector2Int:
 0583                    return AddColumnInternal(columnName, ref allVector2IntColumns, Serializable.SerializableTypes.Vector
 584                case Serializable.SerializableTypes.Vector3Int:
 0585                    return AddColumnInternal(columnName, ref allVector3IntColumns, Serializable.SerializableTypes.Vector
 586                case Serializable.SerializableTypes.Quaternion:
 0587                    return AddColumnInternal(columnName, ref allQuaternionColumns, Serializable.SerializableTypes.Quater
 588                case Serializable.SerializableTypes.Rect:
 0589                    return AddColumnInternal(columnName, ref allRectColumns, Serializable.SerializableTypes.Rect, insert
 590                case Serializable.SerializableTypes.RectInt:
 0591                    return AddColumnInternal(columnName, ref allRectIntColumns, Serializable.SerializableTypes.RectInt, 
 592                case Serializable.SerializableTypes.Color:
 0593                    return AddColumnInternal(columnName, ref allColorColumns, Serializable.SerializableTypes.Color, inse
 594                case Serializable.SerializableTypes.LayerMask:
 0595                    return AddColumnInternal(columnName, ref allLayerMaskColumns, Serializable.SerializableTypes.LayerMa
 596                case Serializable.SerializableTypes.Bounds:
 0597                    return AddColumnInternal(columnName, ref allBoundsColumns, Serializable.SerializableTypes.Bounds, in
 598                case Serializable.SerializableTypes.BoundsInt:
 0599                    return AddColumnInternal(columnName, ref allBoundsIntColumns, Serializable.SerializableTypes.BoundsI
 600                case Serializable.SerializableTypes.Hash128:
 0601                    return AddColumnInternal(columnName, ref allHash128Columns, Serializable.SerializableTypes.Hash128, 
 602                case Serializable.SerializableTypes.Gradient:
 0603                    return AddColumnInternal(columnName, ref allGradientColumns, Serializable.SerializableTypes.Gradient
 604                case Serializable.SerializableTypes.AnimationCurve:
 0605                    return AddColumnInternal(columnName, ref allAnimationCurveColumns, Serializable.SerializableTypes.An
 606                case Serializable.SerializableTypes.Object:
 0607                    return AddColumnInternal(columnName, ref allObjectRefColumns, Serializable.SerializableTypes.Object,
 608            }
 0609            return -1;
 0610        }
 611
 612        public void RemoveColumn(Serializable.SerializableTypes columnType, int columnID)
 0613        {
 0614            switch (columnType)
 615            {
 616                case Serializable.SerializableTypes.String:
 0617                    RemoveColumnInternal(ref allStringColumns, Serializable.SerializableTypes.String, columnID);
 0618                    break;
 619                case Serializable.SerializableTypes.Char:
 0620                    RemoveColumnInternal(ref allCharColumns, Serializable.SerializableTypes.Char, columnID);
 0621                    break;
 622                case Serializable.SerializableTypes.Bool:
 0623                    RemoveColumnInternal(ref allBoolColumns, Serializable.SerializableTypes.Bool, columnID);
 0624                    break;
 625                case Serializable.SerializableTypes.SByte:
 0626                    RemoveColumnInternal(ref allSbyteColumns, Serializable.SerializableTypes.SByte, columnID);
 0627                    break;
 628                case Serializable.SerializableTypes.Byte:
 0629                    RemoveColumnInternal(ref allByteColumns, Serializable.SerializableTypes.Byte, columnID);
 0630                    break;
 631                case Serializable.SerializableTypes.Short:
 0632                    RemoveColumnInternal(ref allShortColumns, Serializable.SerializableTypes.Short, columnID);
 0633                    break;
 634                case Serializable.SerializableTypes.UShort:
 0635                    RemoveColumnInternal(ref allUshortColumns, Serializable.SerializableTypes.UShort, columnID);
 0636                    break;
 637                case Serializable.SerializableTypes.Int:
 0638                    RemoveColumnInternal(ref allIntColumns, Serializable.SerializableTypes.Int, columnID);
 0639                    break;
 640                case Serializable.SerializableTypes.UInt:
 0641                    RemoveColumnInternal(ref allUintColumns, Serializable.SerializableTypes.UInt, columnID);
 0642                    break;
 643                case Serializable.SerializableTypes.Long:
 0644                    RemoveColumnInternal(ref allLongColumns, Serializable.SerializableTypes.Long, columnID);
 0645                    break;
 646                case Serializable.SerializableTypes.ULong:
 0647                    RemoveColumnInternal(ref allUlongColumns, Serializable.SerializableTypes.ULong, columnID);
 0648                    break;
 649                case Serializable.SerializableTypes.Float:
 0650                    RemoveColumnInternal(ref allFloatColumns, Serializable.SerializableTypes.Float, columnID);
 0651                    break;
 652                case Serializable.SerializableTypes.Double:
 0653                    RemoveColumnInternal(ref allDoubleColumns, Serializable.SerializableTypes.Double, columnID);
 0654                    break;
 655                case Serializable.SerializableTypes.Vector2:
 0656                    RemoveColumnInternal(ref allVector2Columns, Serializable.SerializableTypes.Vector2, columnID);
 0657                    break;
 658                case Serializable.SerializableTypes.Vector3:
 0659                    RemoveColumnInternal(ref allVector3Columns, Serializable.SerializableTypes.Vector3, columnID);
 0660                    break;
 661                case Serializable.SerializableTypes.Vector4:
 0662                    RemoveColumnInternal(ref allVector4Columns, Serializable.SerializableTypes.Vector4, columnID);
 0663                    break;
 664                case Serializable.SerializableTypes.Vector2Int:
 0665                    RemoveColumnInternal(ref allVector2IntColumns, Serializable.SerializableTypes.Vector2Int, columnID);
 0666                    break;
 667                case Serializable.SerializableTypes.Vector3Int:
 0668                    RemoveColumnInternal(ref allVector3IntColumns, Serializable.SerializableTypes.Vector3Int, columnID);
 0669                    break;
 670                case Serializable.SerializableTypes.Quaternion:
 0671                    RemoveColumnInternal(ref allQuaternionColumns, Serializable.SerializableTypes.Quaternion, columnID);
 0672                    break;
 673                case Serializable.SerializableTypes.Rect:
 0674                    RemoveColumnInternal(ref allRectColumns, Serializable.SerializableTypes.Rect, columnID);
 0675                    break;
 676                case Serializable.SerializableTypes.RectInt:
 0677                    RemoveColumnInternal(ref allRectIntColumns, Serializable.SerializableTypes.RectInt, columnID);
 0678                    break;
 679                case Serializable.SerializableTypes.Color:
 0680                    RemoveColumnInternal(ref allColorColumns, Serializable.SerializableTypes.Color, columnID);
 0681                    break;
 682                case Serializable.SerializableTypes.LayerMask:
 0683                    RemoveColumnInternal(ref allLayerMaskColumns, Serializable.SerializableTypes.LayerMask, columnID);
 0684                    break;
 685                case Serializable.SerializableTypes.Bounds:
 0686                    RemoveColumnInternal(ref allBoundsColumns, Serializable.SerializableTypes.Bounds, columnID);
 0687                    break;
 688                case Serializable.SerializableTypes.BoundsInt:
 0689                    RemoveColumnInternal(ref allBoundsIntColumns, Serializable.SerializableTypes.BoundsInt, columnID);
 0690                    break;
 691                case Serializable.SerializableTypes.Hash128:
 0692                    RemoveColumnInternal(ref allHash128Columns, Serializable.SerializableTypes.Hash128, columnID);
 0693                    break;
 694                case Serializable.SerializableTypes.Gradient:
 0695                    RemoveColumnInternal(ref allGradientColumns, Serializable.SerializableTypes.Gradient, columnID);
 0696                    break;
 697                case Serializable.SerializableTypes.AnimationCurve:
 0698                    RemoveColumnInternal(ref allAnimationCurveColumns, Serializable.SerializableTypes.AnimationCurve, co
 0699                    break;
 700                case Serializable.SerializableTypes.Object:
 0701                    RemoveColumnInternal(ref allObjectRefColumns, Serializable.SerializableTypes.Object, columnID);
 0702                    break;
 703            }
 0704        }
 705
 706        // Set
 707
 708        public ulong SetString(int row, int column, string value)
 0709        {
 0710            return SetCell(row, column, ref allStringColumns, value);
 0711        }
 712
 713        public ulong SetBool(int row, int column, bool value)
 0714        {
 0715            return SetCell(row, column, ref allBoolColumns, value);
 0716        }
 717
 718        public ulong SetChar(int row, int column, char value)
 0719        {
 0720            return SetCell(row, column, ref allCharColumns, value);
 0721        }
 722
 723        public ulong SetSByte(int row, int column, sbyte value)
 0724        {
 0725            return SetCell(row, column, ref allSbyteColumns, value);
 0726        }
 727
 728        public ulong SetByte(int row, int column, byte value)
 0729        {
 0730            return SetCell(row, column, ref allByteColumns, value);
 0731        }
 732
 733        public ulong SetShort(int row, int column, short value)
 0734        {
 0735            return SetCell(row, column, ref allShortColumns, value);
 0736        }
 737
 738        public ulong SetUShort(int row, int column, ushort value)
 0739        {
 0740            return SetCell(row, column, ref allUshortColumns, value);
 0741        }
 742
 743        public ulong SetInt(int row, int column, int value)
 0744        {
 0745            return SetCell(row, column, ref allIntColumns, value);
 0746        }
 747
 748        public ulong SetUInt(int row, int column, uint value)
 0749        {
 0750            return SetCell(row, column, ref allUintColumns, value);
 0751        }
 752
 753        public ulong SetLong(int row, int column, long value)
 0754        {
 0755            return SetCell(row, column, ref allLongColumns, value);
 0756        }
 757
 758        public ulong SetULong(int row, int column, ulong value)
 0759        {
 0760            return SetCell(row, column, ref allUlongColumns, value);
 0761        }
 762
 763        public ulong SetFloat(int row, int column, float value)
 0764        {
 0765            return SetCell(row, column, ref allFloatColumns, value);
 0766        }
 767
 768        public ulong SetDouble(int row, int column, double value)
 0769        {
 0770            return SetCell(row, column, ref allDoubleColumns, value);
 0771        }
 772
 773        public ulong SetVector2(int row, int column, Vector2 value)
 0774        {
 0775            return SetCell(row, column, ref allVector2Columns, value);
 0776        }
 777
 778        public ulong SetVector3(int row, int column, Vector3 value)
 0779        {
 0780            return SetCell(row, column, ref allVector3Columns, value);
 0781        }
 782
 783        public ulong SetVector4(int row, int column, Vector4 value)
 0784        {
 0785            return SetCell(row, column, ref allVector4Columns, value);
 0786        }
 787
 788        public ulong SetVector2Int(int row, int column, Vector2Int value)
 0789        {
 0790            return SetCell(row, column, ref allVector2IntColumns, value);
 0791        }
 792
 793        public ulong SetVector3Int(int row, int column, Vector3Int value)
 0794        {
 0795            return SetCell(row, column, ref allVector3IntColumns, value);
 0796        }
 797
 798        public ulong SetQuaternion(int row, int column, Quaternion value)
 0799        {
 0800            return SetCell(row, column, ref allQuaternionColumns, value);
 0801        }
 802
 803        public ulong SetRect(int row, int column, Rect value)
 0804        {
 0805            return SetCell(row, column, ref allRectColumns, value);
 0806        }
 807
 808        public ulong SetRectInt(int row, int column, RectInt value)
 0809        {
 0810            return SetCell(row, column, ref allRectIntColumns, value);
 0811        }
 812
 813        public ulong SetColor(int row, int column, Color value)
 0814        {
 0815            return SetCell(row, column, ref allColorColumns, value);
 0816        }
 817
 818        public ulong SetLayerMask(int row, int column, LayerMask value)
 0819        {
 0820            return SetCell(row, column, ref allLayerMaskColumns, value);
 0821        }
 822
 823        public ulong SetBounds(int row, int column, Bounds value)
 0824        {
 0825            return SetCell(row, column, ref allBoundsColumns, value);
 0826        }
 827
 828        public ulong SetBoundsInt(int row, int column, BoundsInt value)
 0829        {
 0830            return SetCell(row, column, ref allBoundsIntColumns, value);
 0831        }
 832
 833        public ulong SetHash128(int row, int column, Hash128 value)
 0834        {
 0835            return SetCell(row, column, ref allHash128Columns, value);
 0836        }
 837
 838        public ulong SetGradient(int row, int column, Gradient value)
 0839        {
 0840            return SetCell(row, column, ref allGradientColumns, value);
 0841        }
 842
 843        public ulong SetAnimationCurve(int row, int column, AnimationCurve value)
 0844        {
 0845            return SetCell(row, column, ref allAnimationCurveColumns, value);
 0846        }
 847
 848        public ulong SetObject(int row, int column, UnityEngine.Object value)
 0849        {
 0850            return SetCell(row, column, ref allObjectRefColumns, value);
 0851        }
 852
 853        // Get
 854        public string GetString(int row, int column)
 0855        {
 0856            return GetCell(row, column, ref allStringColumns);
 0857        }
 858
 859        public bool GetBool(int row, int column)
 0860        {
 0861            return GetCell(row, column, ref allBoolColumns);
 0862        }
 863
 864        public char GetChar(int row, int column)
 0865        {
 0866            return GetCell(row, column, ref allCharColumns);
 0867        }
 868
 869        public sbyte GetSByte(int row, int column)
 0870        {
 0871            return GetCell(row, column, ref allSbyteColumns);
 0872        }
 873
 874        public byte GetByte(int row, int column)
 0875        {
 0876            return GetCell(row, column, ref allByteColumns);
 0877        }
 878
 879        public short GetShort(int row, int column)
 0880        {
 0881            return GetCell(row, column, ref allShortColumns);
 0882        }
 883
 884        public ushort GetUShort(int row, int column)
 0885        {
 0886            return GetCell(row, column, ref allUshortColumns);
 0887        }
 888
 889        public int GetInt(int row, int column)
 0890        {
 0891            return GetCell(row, column, ref allIntColumns);
 0892        }
 893
 894        public uint GetUInt(int row, int column)
 0895        {
 0896            return GetCell(row, column, ref allUintColumns);
 0897        }
 898
 899        public long GetLong(int row, int column)
 0900        {
 0901            return GetCell(row, column, ref allLongColumns);
 0902        }
 903
 904        public ulong GetULong(int row, int column)
 0905        {
 0906            return GetCell(row, column, ref allUlongColumns);
 0907        }
 908
 909        public float GetFloat(int row, int column)
 0910        {
 0911            return GetCell(row, column, ref allFloatColumns);
 0912        }
 913
 914        public double GetDouble(int row, int column)
 0915        {
 0916            return GetCell(row, column, ref allDoubleColumns);
 0917        }
 918
 919        public Vector2 GetVector2(int row, int column)
 0920        {
 0921            return GetCell(row, column, ref allVector2Columns);
 0922        }
 923
 924        public Vector3 GetVector3(int row, int column)
 0925        {
 0926            return GetCell(row, column, ref allVector3Columns);
 0927        }
 928
 929        public Vector4 GetVector4(int row, int column)
 0930        {
 0931            return GetCell(row, column, ref allVector4Columns);
 0932        }
 933
 934        public Vector2Int GetVector2Int(int row, int column)
 0935        {
 0936            return GetCell(row, column, ref allVector2IntColumns);
 0937        }
 938
 939        public Vector3Int GetVector3Int(int row, int column)
 0940        {
 0941            return GetCell(row, column, ref allVector3IntColumns);
 0942        }
 943
 944        public Quaternion GetQuaternion(int row, int column)
 0945        {
 0946            return GetCell(row, column, ref allQuaternionColumns);
 0947        }
 948
 949        public Rect GetRect(int row, int column)
 0950        {
 0951            return GetCell(row, column, ref allRectColumns);
 0952        }
 953
 954        public RectInt GetRectInt(int row, int column)
 0955        {
 0956            return GetCell(row, column, ref allRectIntColumns);
 0957        }
 958
 959        public Color GetColor(int row, int column)
 0960        {
 0961            return GetCell(row, column, ref allColorColumns);
 0962        }
 963
 964        public LayerMask GetLayerMask(int row, int column)
 0965        {
 0966            return GetCell(row, column, ref allLayerMaskColumns);
 0967        }
 968
 969        public Bounds GetBounds(int row, int column)
 0970        {
 0971            return GetCell(row, column, ref allBoundsColumns);
 0972        }
 973
 974        public BoundsInt GetBoundsInt(int row, int column)
 0975        {
 0976            return GetCell(row, column, ref allBoundsIntColumns);
 0977        }
 978
 979        public Hash128 GetHash128(int row, int column)
 0980        {
 0981            return GetCell(row, column, ref allHash128Columns);
 0982        }
 983
 984        public Gradient GetGradient(int row, int column)
 0985        {
 0986            return GetCell(row, column, ref allGradientColumns);
 0987        }
 988
 989        public AnimationCurve GetAnimationCurve(int row, int column)
 0990        {
 0991            return GetCell(row, column, ref allAnimationCurveColumns);
 0992        }
 993
 994        public UnityEngine.Object GetObject(int row, int column)
 0995        {
 0996            return GetCell(row, column, ref allObjectRefColumns);
 0997        }
 998
 999        // Get ref
 1000
 1001        public ref string GetStringRef(int row, int column)
 01002        {
 01003            return ref GetCellRef(row, column, ref allStringColumns);
 01004        }
 1005
 1006        public ref bool GetBoolRef(int row, int column)
 01007        {
 01008            return ref GetCellRef(row, column, ref allBoolColumns);
 01009        }
 1010
 1011        public ref char GetCharRef(int row, int column)
 01012        {
 01013            return ref GetCellRef(row, column, ref allCharColumns);
 01014        }
 1015
 1016        public ref sbyte GetSbyteRef(int row, int column)
 01017        {
 01018            return ref GetCellRef(row, column, ref allSbyteColumns);
 01019        }
 1020
 1021        public ref byte GetByteRef(int row, int columnID)
 01022        {
 01023            return ref GetCellRef(row, columnID, ref allByteColumns);
 01024        }
 1025
 1026        public ref short GetShortRef(int row, int column)
 01027        {
 01028            return ref GetCellRef(row, column, ref allShortColumns);
 01029        }
 1030
 1031        public ref ushort GetUshortRef(int row, int column)
 01032        {
 01033            return ref GetCellRef(row, column, ref allUshortColumns);
 01034        }
 1035
 1036        public ref int GetIntRef(int row, int column)
 01037        {
 01038            return ref GetCellRef(row, column, ref allIntColumns);
 01039        }
 1040
 1041        public ref uint GetUintRef(int row, int column)
 01042        {
 01043            return ref GetCellRef(row, column, ref allUintColumns);
 01044        }
 1045
 1046        public ref long GetLongRef(int row, int column)
 01047        {
 01048            return ref GetCellRef(row, column, ref allLongColumns);
 01049        }
 1050
 1051        public ref ulong GetUlongRef(int row, int column)
 01052        {
 01053            return ref GetCellRef(row, column, ref allUlongColumns);
 01054        }
 1055
 1056        public ref float GetFloatRef(int row, int column)
 01057        {
 01058            return ref GetCellRef(row, column, ref allFloatColumns);
 01059        }
 1060
 1061        public ref double GetDoubleRef(int row, int column)
 01062        {
 01063            return ref GetCellRef(row, column, ref allDoubleColumns);
 01064        }
 1065
 1066        public ref Vector2 GetVector2Ref(int row, int column)
 01067        {
 01068            return ref GetCellRef(row, column, ref allVector2Columns);
 01069        }
 1070
 1071        public ref Vector3 GetVector3Ref(int row, int column)
 01072        {
 01073            return ref GetCellRef(row, column, ref allVector3Columns);
 01074        }
 1075
 1076        public ref Vector4 GetVector4Ref(int row, int column)
 01077        {
 01078            return ref GetCellRef(row, column, ref allVector4Columns);
 01079        }
 1080
 1081        public ref Vector2Int GetVector2IntRef(int row, int column)
 01082        {
 01083            return ref GetCellRef(row, column, ref allVector2IntColumns);
 01084        }
 1085
 1086        public ref Vector3Int GetVector3IntRef(int row, int column)
 01087        {
 01088            return ref GetCellRef(row, column, ref allVector3IntColumns);
 01089        }
 1090
 1091        public ref Quaternion GetQuaternionRef(int row, int column)
 01092        {
 01093            return ref GetCellRef(row, column, ref allQuaternionColumns);
 01094        }
 1095
 1096        public ref Rect GetRectRef(int row, int column)
 01097        {
 01098            return ref GetCellRef(row, column, ref allRectColumns);
 01099        }
 1100
 1101        public ref RectInt GetRectIntRef(int row, int column)
 01102        {
 01103            return ref GetCellRef(row, column, ref allRectIntColumns);
 01104        }
 1105
 1106        public ref Color GetColorRef(int row, int column)
 01107        {
 01108            return ref GetCellRef(row, column, ref allColorColumns);
 01109        }
 1110
 1111        public ref LayerMask GetLayerMaskRef(int row, int column)
 01112        {
 01113            return ref GetCellRef(row, column, ref allLayerMaskColumns);
 01114        }
 1115
 1116        public ref Bounds GetBoundsRef(int row, int column)
 01117        {
 01118            return ref GetCellRef(row, column, ref allBoundsColumns);
 01119        }
 1120
 1121        public ref BoundsInt GetBoundsIntRef(int row, int column)
 01122        {
 01123            return ref GetCellRef(row, column, ref allBoundsIntColumns);
 01124        }
 1125
 1126        public ref Hash128 GetHash128Ref(int row, int column)
 01127        {
 01128            return ref GetCellRef(row, column, ref allHash128Columns);
 01129        }
 1130
 1131        public ref Gradient GetGradientRef(int row, int column)
 01132        {
 01133            return ref GetCellRef(row, column, ref allGradientColumns);
 01134        }
 1135
 1136        public ref AnimationCurve GetAnimationCurveRef(int row, int column)
 01137        {
 01138            return ref GetCellRef(row, column, ref allAnimationCurveColumns);
 01139        }
 1140
 1141        public ref UnityEngine.Object GetObjectRef(int row, int column)
 01142        {
 01143            return ref GetCellRef(row, column, ref allObjectRefColumns);
 01144        }
 1145
 1146        // Get Column
 1147
 1148        public string[] GetStringColumn(int column)
 01149        {
 01150            return GetColumn(column, ref allStringColumns);
 01151        }
 1152
 1153        public bool[] GetBoolColumn(int column)
 01154        {
 01155            return GetColumn(column, ref allBoolColumns);
 01156        }
 1157
 1158        public char[] GetCharColumn(int column)
 01159        {
 01160            return GetColumn(column, ref allCharColumns);
 01161        }
 1162
 1163        public sbyte[] GetSbyteColumn(int column)
 01164        {
 01165            return GetColumn(column, ref allSbyteColumns);
 01166        }
 1167
 1168        public byte[] GetByteColumn(int column)
 01169        {
 01170            return GetColumn(column, ref allByteColumns);
 01171        }
 1172
 1173        public short[] GetShortColumn(int column)
 01174        {
 01175            return GetColumn(column, ref allShortColumns);
 01176        }
 1177
 1178        public ushort[] GetUshortColumn(int column)
 01179        {
 01180            return GetColumn(column, ref allUshortColumns);
 01181        }
 1182
 1183        public int[] GetIntColumn(int column)
 01184        {
 01185            return GetColumn(column, ref allIntColumns);
 01186        }
 1187
 1188        public uint[] GetUintColumn(int column)
 01189        {
 01190            return GetColumn(column, ref allUintColumns);
 01191        }
 1192
 1193        public long[] GetLongColumn(int column)
 01194        {
 01195            return GetColumn(column, ref allLongColumns);
 01196        }
 1197
 1198        public ulong[] GetUlongColumn(int column)
 01199        {
 01200            return GetColumn(column, ref allUlongColumns);
 01201        }
 1202
 1203        public float[] GetFloatColumn(int column)
 01204        {
 01205            return GetColumn(column, ref allFloatColumns);
 01206        }
 1207
 1208        public double[] GetDoubleColumn(int column)
 01209        {
 01210            return GetColumn(column, ref allDoubleColumns);
 01211        }
 1212
 1213        public Vector2[] GetVector2Column(int column)
 01214        {
 01215            return GetColumn(column, ref allVector2Columns);
 01216        }
 1217
 1218        public Vector3[] GetVector3Column(int column)
 01219        {
 01220            return GetColumn(column, ref allVector3Columns);
 01221        }
 1222
 1223        public Vector4[] GetVector4Column(int column)
 01224        {
 01225            return GetColumn(column, ref allVector4Columns);
 01226        }
 1227
 1228        public Vector2Int[] GetVector2IntColumn(int column)
 01229        {
 01230            return GetColumn(column, ref allVector2IntColumns);
 01231        }
 1232
 1233        public Vector3Int[] GetVector3IntColumn(int column)
 01234        {
 01235            return GetColumn(column, ref allVector3IntColumns);
 01236        }
 1237
 1238        public Quaternion[] GetQuaternionColumn(int column)
 01239        {
 01240            return GetColumn(column, ref allQuaternionColumns);
 01241        }
 1242
 1243        public Rect[] GetRectColumn(int column)
 01244        {
 01245            return GetColumn(column, ref allRectColumns);
 01246        }
 1247
 1248        public RectInt[] GetRectIntColumn(int column)
 01249        {
 01250            return GetColumn(column, ref allRectIntColumns);
 01251        }
 1252
 1253        public Color[] GetColorColumn(int column)
 01254        {
 01255            return GetColumn(column, ref allColorColumns);
 01256        }
 1257
 1258        public LayerMask[] GetLayerMaskColumn(int column)
 01259        {
 01260            return GetColumn(column, ref allLayerMaskColumns);
 01261        }
 1262
 1263        public Bounds[] GetBoundsColumn(int column)
 01264        {
 01265            return GetColumn(column, ref allBoundsColumns);
 01266        }
 1267
 1268        public BoundsInt[] GetBoundsIntColumn(int column)
 01269        {
 01270            return GetColumn(column, ref allBoundsIntColumns);
 01271        }
 1272
 1273        public Hash128[] GetHash128Column(int column)
 01274        {
 01275            return GetColumn(column, ref allHash128Columns);
 01276        }
 1277
 1278        public Gradient[] GetGradientColumn(int column)
 01279        {
 01280            return GetColumn(column, ref allGradientColumns);
 01281        }
 1282
 1283        public AnimationCurve[] GetAnimationCurveColumn(int column)
 01284        {
 01285            return GetColumn(column, ref allAnimationCurveColumns);
 01286        }
 1287
 1288        public UnityEngine.Object[] GetObjectColumn(int column)
 01289        {
 01290            return GetColumn(column, ref allObjectRefColumns);
 01291        }
 1292
 1293        // Internal
 1294
 1295        internal int AddColumnInternal<T>(string columnName, ref ArrayHolder<T>[] allColumnsOfType, Serializable.Seriali
 01296        {
 01297            int columnCount = allColumnsOfType?.Length ?? 0;
 01298            Array.Resize(ref allColumnsOfType, columnCount + 1);
 01299            allColumnsOfType[columnCount].TArray = new T[rowCount];
 1300
 01301            int columnID = columnEntriesFreeListHead;
 01302            string[] columnNamesForType = allColumnNames[(int)typeIndex].TArray;
 01303            int columnNamesCount = columnNamesForType?.Length ?? 0;
 01304            Array.Resize(ref columnNamesForType, columnNamesCount + 1);
 01305            columnNamesForType[columnNamesCount] = columnName == null ? columnID.ToString() : columnName;
 01306            allColumnNames[(int)typeIndex].TArray = columnNamesForType;
 1307
 1308
 01309            int columnIDToDenseIndexMapLength = columnIDToDenseIndexMap?.Length ?? 0;
 01310            if (columnID >= columnIDToDenseIndexMapLength)
 01311            {
 01312                int newSize = columnIDToDenseIndexMapLength * 2;
 01313                newSize = newSize == 0 ? 1 : newSize;
 01314                Array.Resize(ref columnIDToDenseIndexMap, newSize);
 01315                for (int i = columnIDToDenseIndexMapLength; i < newSize; i++)
 01316                {
 01317                    ref ColumnEntry entry = ref columnIDToDenseIndexMap[i];
 01318                    entry.columnDenseIndex = i + 1;
 01319                    entry.ColumnType = Serializable.SerializableTypes.Invalid;
 01320                }
 1321
 01322                Array.Resize(ref columnIDToSortOrderMap, newSize);
 01323                for (int i = columnIDToDenseIndexMapLength; i < newSize; i++)
 01324                {
 01325                    columnIDToSortOrderMap[i] = -1;
 01326                }
 01327            }
 1328
 01329            ref int[] denseIndexToIDMap = ref columnDenseIndexToIDMap[(int)typeIndex].TArray;
 01330            int denseIndexToIDMapLength = denseIndexToIDMap?.Length ?? 0;
 01331            Array.Resize(ref denseIndexToIDMap, denseIndexToIDMapLength + 1);
 01332            denseIndexToIDMap[denseIndexToIDMapLength] = columnID;
 1333
 01334            ref ColumnEntry newEntry = ref columnIDToDenseIndexMap[columnID];
 01335            newEntry.columnDenseIndex = denseIndexToIDMapLength;
 01336            newEntry.ColumnType = typeIndex;
 1337
 01338            insertAtSortedIndex = insertAtSortedIndex < 0 ? combinedColumnCount : insertAtSortedIndex;
 01339            Array.Resize(ref sortedOrderToColumnIDMap, combinedColumnCount + 1);
 01340            for (int i = combinedColumnCount; i > insertAtSortedIndex; i--)
 01341            {
 01342                int currentColumnID = sortedOrderToColumnIDMap[i - 1];
 01343                sortedOrderToColumnIDMap[i] = currentColumnID;
 01344                columnIDToSortOrderMap[currentColumnID] = i;
 01345            }
 1346
 01347            columnEntriesFreeListHead = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01348            columnIDToSortOrderMap[columnID] = insertAtSortedIndex;
 01349            sortedOrderToColumnIDMap[insertAtSortedIndex] = columnID;
 1350
 01351            ++combinedColumnCount;
 01352            dataVersion++;
 1353
 01354            return columnID;
 01355        }
 1356
 1357        internal void RemoveColumnInternal<T>(ref ArrayHolder<T>[] allColumnsOfType, Serializable.SerializableTypes type
 01358        {
 01359            int columnLocation = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 1360
 01361            int lastIndex = allColumnsOfType.Length - 1;
 01362            allColumnsOfType[columnLocation] = allColumnsOfType[lastIndex];
 01363            Array.Resize(ref allColumnsOfType, lastIndex);
 1364
 01365            ref string[] columnNamesOfType = ref allColumnNames[(int)typeIndex].TArray;
 01366            columnNamesOfType[columnLocation] = columnNamesOfType[lastIndex];
 01367            Array.Resize(ref columnNamesOfType, lastIndex);
 1368
 01369            int columnOrder = columnIDToSortOrderMap[columnID];
 1370
 01371            ref int[] denseIndicesOfType = ref columnDenseIndexToIDMap[(int)typeIndex].TArray;
 01372            int sparseIndexToSwap = denseIndicesOfType[lastIndex];
 1373
 01374            ref ColumnEntry sparseIndexToFree = ref columnIDToDenseIndexMap[columnID];
 01375            sparseIndexToFree.ColumnType = Serializable.SerializableTypes.Invalid;
 01376            sparseIndexToFree.columnDenseIndex = columnEntriesFreeListHead;
 01377            columnEntriesFreeListHead = columnID;
 1378
 01379            columnIDToDenseIndexMap[sparseIndexToSwap].columnDenseIndex = columnLocation;
 01380            denseIndicesOfType[columnLocation] = sparseIndexToSwap;
 01381            Array.Resize(ref denseIndicesOfType, lastIndex);
 1382
 01383            for (int i = columnOrder + 1; i < combinedColumnCount; i++)
 01384            {
 01385                int currentColumnID = sortedOrderToColumnIDMap[i];
 01386                sortedOrderToColumnIDMap[i - 1] = currentColumnID;
 01387                columnIDToSortOrderMap[currentColumnID] = i - 1;
 01388            }
 1389
 01390            Array.Resize(ref sortedOrderToColumnIDMap, combinedColumnCount - 1);
 1391
 01392            --combinedColumnCount;
 01393            dataVersion++;
 01394        }
 1395
 1396        internal void InsertRowsOfTypeInternal<T>(ref ArrayHolder<T>[] allColumnsOfType, int insertAt, int numberOfNewRo
 01397        {
 01398            int columnCount = allColumnsOfType?.Length ?? 0;
 01399            for (int i = 0; i < columnCount; i++)
 01400            {
 01401                ref T[] column = ref allColumnsOfType[i].TArray;
 01402                int newRowCount = rowCount + numberOfNewRows;
 01403                Array.Resize(ref column, newRowCount);
 01404                for (int j = newRowCount - 1; j > insertAt + numberOfNewRows - 1; j--)
 01405                {
 01406                    column[j] = column[j - numberOfNewRows];
 01407                }
 1408
 01409                for (int j = 0; j < numberOfNewRows; j++)
 01410                {
 01411                    column[insertAt + j] = default;
 01412                }
 01413            }
 01414        }
 1415
 1416        internal void DeleteRowsOfTypeInternal<T>(ref ArrayHolder<T>[] allColumnsOfType, int removeAt, int numberOfRowsT
 01417        {
 01418            int columnCount = allColumnsOfType?.Length ?? 0;
 1419
 01420            for (int i = 0; i < columnCount; i++)
 01421            {
 01422                ref T[] column = ref allColumnsOfType[i].TArray;
 01423                int newRowCount = rowCount - numberOfRowsToDelete;
 1424
 01425                for (int j = removeAt; j < rowCount - numberOfRowsToDelete; j++)
 01426                {
 01427                    column[j] = column[j + numberOfRowsToDelete];
 01428                }
 1429
 01430                Array.Resize(ref column, newRowCount);
 01431            }
 01432        }
 1433
 1434        internal ref T GetCellRef<T>(int rowID, int columnID, ref ArrayHolder<T>[] allColumnsOfType)
 01435        {
 01436            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01437            return ref allColumnsOfType[column][rowID];
 01438        }
 1439
 1440        internal T GetCell<T>(int rowID, int columnID, ref ArrayHolder<T>[] allColumnsOfType)
 01441        {
 01442            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01443            return allColumnsOfType[column][rowID];
 01444        }
 1445
 1446        internal ulong SetCell<T>(int rowID, int columnID, ref ArrayHolder<T>[] allColumnsOfType, T value)
 01447        {
 01448            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01449            allColumnsOfType[column][rowID] = value;
 01450            dataVersion++;
 01451            return dataVersion;
 01452        }
 1453
 1454        internal T[] GetColumn<T>(int columnID, ref ArrayHolder<T>[] allColumnsOfType)
 01455        {
 01456            int column = columnIDToDenseIndexMap[columnID].columnDenseIndex;
 01457            return allColumnsOfType[column].TArray;
 01458        }
 1459    }
 1460}

Coverage by test methods





































































































































































































































































































































































































































































































































































































































































































Methods/Properties

StableTable()
GetDataVersion()
GetColumnCount()
GetRowCount()
GetAllRowDescriptions()
GetRowDescription(System.String)
GetRowDescription(System.Int32)
GetColumnDescription(System.String)
GetColumnDescription(System.Int32)
GetAllColumnDescriptions()
SetColumnName(System.String, System.Int32)
GetColumnName(System.Int32)
GetColumnNameRef(System.Int32)
AddRow(System.String, System.Int32)
AddRows(System.Int32, System.String[], System.Int32)
AddRows(System.Int32, System.Int32[]&, System.String[], System.Int32)
RemoveRow(System.Int32)
AddColumn(GDX.Serializable/SerializableTypes, System.String, System.Int32)
RemoveColumn(GDX.Serializable/SerializableTypes, System.Int32)
SetString(System.Int32, System.Int32, System.String)
SetBool(System.Int32, System.Int32, System.Boolean)
SetChar(System.Int32, System.Int32, System.Char)
SetSByte(System.Int32, System.Int32, System.SByte)
SetByte(System.Int32, System.Int32, System.Byte)
SetShort(System.Int32, System.Int32, System.Int16)
SetUShort(System.Int32, System.Int32, System.UInt16)
SetInt(System.Int32, System.Int32, System.Int32)
SetUInt(System.Int32, System.Int32, System.UInt32)
SetLong(System.Int32, System.Int32, System.Int64)
SetULong(System.Int32, System.Int32, System.UInt64)
SetFloat(System.Int32, System.Int32, System.Single)
SetDouble(System.Int32, System.Int32, System.Double)
SetVector2(System.Int32, System.Int32, UnityEngine.Vector2)
SetVector3(System.Int32, System.Int32, UnityEngine.Vector3)
SetVector4(System.Int32, System.Int32, UnityEngine.Vector4)
SetVector2Int(System.Int32, System.Int32, UnityEngine.Vector2Int)
SetVector3Int(System.Int32, System.Int32, UnityEngine.Vector3Int)
SetQuaternion(System.Int32, System.Int32, UnityEngine.Quaternion)
SetRect(System.Int32, System.Int32, UnityEngine.Rect)
SetRectInt(System.Int32, System.Int32, UnityEngine.RectInt)
SetColor(System.Int32, System.Int32, UnityEngine.Color)
SetLayerMask(System.Int32, System.Int32, UnityEngine.LayerMask)
SetBounds(System.Int32, System.Int32, UnityEngine.Bounds)
SetBoundsInt(System.Int32, System.Int32, UnityEngine.BoundsInt)
SetHash128(System.Int32, System.Int32, UnityEngine.Hash128)
SetGradient(System.Int32, System.Int32, UnityEngine.Gradient)
SetAnimationCurve(System.Int32, System.Int32, UnityEngine.AnimationCurve)
SetObject(System.Int32, System.Int32, UnityEngine.Object)
GetString(System.Int32, System.Int32)
GetBool(System.Int32, System.Int32)
GetChar(System.Int32, System.Int32)
GetSByte(System.Int32, System.Int32)
GetByte(System.Int32, System.Int32)
GetShort(System.Int32, System.Int32)
GetUShort(System.Int32, System.Int32)
GetInt(System.Int32, System.Int32)
GetUInt(System.Int32, System.Int32)
GetLong(System.Int32, System.Int32)
GetULong(System.Int32, System.Int32)
GetFloat(System.Int32, System.Int32)
GetDouble(System.Int32, System.Int32)
GetVector2(System.Int32, System.Int32)
GetVector3(System.Int32, System.Int32)
GetVector4(System.Int32, System.Int32)
GetVector2Int(System.Int32, System.Int32)
GetVector3Int(System.Int32, System.Int32)
GetQuaternion(System.Int32, System.Int32)
GetRect(System.Int32, System.Int32)
GetRectInt(System.Int32, System.Int32)
GetColor(System.Int32, System.Int32)
GetLayerMask(System.Int32, System.Int32)
GetBounds(System.Int32, System.Int32)
GetBoundsInt(System.Int32, System.Int32)
GetHash128(System.Int32, System.Int32)
GetGradient(System.Int32, System.Int32)
GetAnimationCurve(System.Int32, System.Int32)
GetObject(System.Int32, System.Int32)
GetStringRef(System.Int32, System.Int32)
GetBoolRef(System.Int32, System.Int32)
GetCharRef(System.Int32, System.Int32)
GetSbyteRef(System.Int32, System.Int32)
GetByteRef(System.Int32, System.Int32)
GetShortRef(System.Int32, System.Int32)
GetUshortRef(System.Int32, System.Int32)
GetIntRef(System.Int32, System.Int32)
GetUintRef(System.Int32, System.Int32)
GetLongRef(System.Int32, System.Int32)
GetUlongRef(System.Int32, System.Int32)
GetFloatRef(System.Int32, System.Int32)
GetDoubleRef(System.Int32, System.Int32)
GetVector2Ref(System.Int32, System.Int32)
GetVector3Ref(System.Int32, System.Int32)
GetVector4Ref(System.Int32, System.Int32)
GetVector2IntRef(System.Int32, System.Int32)
GetVector3IntRef(System.Int32, System.Int32)
GetQuaternionRef(System.Int32, System.Int32)
GetRectRef(System.Int32, System.Int32)
GetRectIntRef(System.Int32, System.Int32)
GetColorRef(System.Int32, System.Int32)
GetLayerMaskRef(System.Int32, System.Int32)
GetBoundsRef(System.Int32, System.Int32)
GetBoundsIntRef(System.Int32, System.Int32)
GetHash128Ref(System.Int32, System.Int32)
GetGradientRef(System.Int32, System.Int32)
GetAnimationCurveRef(System.Int32, System.Int32)
GetObjectRef(System.Int32, System.Int32)
GetStringColumn(System.Int32)
GetBoolColumn(System.Int32)
GetCharColumn(System.Int32)
GetSbyteColumn(System.Int32)
GetByteColumn(System.Int32)
GetShortColumn(System.Int32)
GetUshortColumn(System.Int32)
GetIntColumn(System.Int32)
GetUintColumn(System.Int32)
GetLongColumn(System.Int32)
GetUlongColumn(System.Int32)
GetFloatColumn(System.Int32)
GetDoubleColumn(System.Int32)
GetVector2Column(System.Int32)
GetVector3Column(System.Int32)
GetVector4Column(System.Int32)
GetVector2IntColumn(System.Int32)
GetVector3IntColumn(System.Int32)
GetQuaternionColumn(System.Int32)
GetRectColumn(System.Int32)
GetRectIntColumn(System.Int32)
GetColorColumn(System.Int32)
GetLayerMaskColumn(System.Int32)
GetBoundsColumn(System.Int32)
GetBoundsIntColumn(System.Int32)
GetHash128Column(System.Int32)
GetGradientColumn(System.Int32)
GetAnimationCurveColumn(System.Int32)
GetObjectColumn(System.Int32)
AddColumnInternal[T](System.String, , GDX.Serializable/SerializableTypes, System.Int32)
RemoveColumnInternal[T](, GDX.Serializable/SerializableTypes, System.Int32)
InsertRowsOfTypeInternal[T](, System.Int32, System.Int32)
DeleteRowsOfTypeInternal[T](, System.Int32, System.Int32)
GetCellRef[T](System.Int32, System.Int32, )
GetCell[T](System.Int32, System.Int32, )
SetCell[T](System.Int32, System.Int32, , T)
GetColumn[T](System.Int32, )